Storage systems often arrange objects in a particular structure, such as a graph. Implicit dependencies exist between objects in the structure, such that a change to one object may change or otherwise impact other objects in the structure or the system as a whole. A problem exists in determining the impact that a change to an object will have on the structure or the system as a whole. The impact of a change is only apparent if the interaction between the objects in the structure is entirely based on locations of objects within the structure. This is often not the case, particularly when objects within the structure are comprised of executable code and thus may behave in an arbitrary fashion. There is a need for overcoming the difficulty of discovering impact of a change—impact analysis—in an environment where dependencies between objects are not readily apparent.
One type of storage system is a database management system. Data records in a relational database management system in a computer are maintained in tables, which are a collection of rows all having the same columns. Each column maintains information on a particular type of data for the data records that comprise the rows. One or more indexes may be associated with each table. An index is an ordered set of pointers to data records in the table based on the data in one or more columns of the table. In some cases, all the information needed by a query may be found in the index, making it unnecessary to search the actual table. An index is comprised of rows or index entries that include an index key and a pointer to a database record in the table having the key column values of the index entry key. An index key comprises key columns that provide an ordering to records in a table. The index key columns comprise the columns of the table, and may include any of the values that are possible for that particular column. Columns that are used frequently to access a table may be used as key columns.
A foreign key, also called a foreign keyword, in a database table is a key from another table that refers to (or targets) a specific key, usually the primary key, in the table being used. A primary key can be targeted by multiple foreign keys from other tables. But a primary key does not necessarily have to be the target of any foreign keys. It is possible to change the primary key in a table when the specific needs of the users change. For example, the people in a town might be uniquely identified according to their driver license numbers in one application, but in another situation it might be more convenient to identify them according to their telephone numbers. When the primary key in a table is changed, the set of associated foreign keys, if there are any, often changes as a result. The relationship between a foreign key and a primary key is easy to determine, and it is easy to understand how a change to a foreign key will impact a primary key, and vice versa.
Various object models have been defined that provide a standard interconnection mechanism between software components. Under these object models, software components are “objects” in the object-oriented sense, and the software components provide “interfaces” through which their functionality can be accessed. With respect to an object model, it is very difficult to determine the impact that a change to an object in the object model will have on the structure or the system as a whole.
Many organizations need to centralize data to improve corporate decision-making. However, their data may be stored in a variety of formats and in different locations. DTS addresses this need by providing a set of tools that allows the extraction, transformation, and consolidation of data from disparate sources into single or multiple destinations supported by DTS connectivity. By using DTS tools to graphically build DTS packages or by programming a package with the DTS object model, custom data movement solutions can be tailored as desired.
A DTS package is an organized collection of connections, DTS tasks, DTS transformations, variables, and workflow constraints assembled either with a DTS tool or programmatically to various cooperating computing applications or to structured storage files. Generally, each package contains one or more steps that are executed sequentially or in parallel when the package is run. When executed, the package connects to the correct data sources, copies data and database objects, transforms data, and notifies other users or processes of events. Packages can be edited, password protected, scheduled for execution, and retrieved by version, for example.
A user may typically build or edit a package piece by piece by adding various components one at a time and then testing the changes. Such a package may be arbitrarily complex, and it is difficult, if possible at all, to determine the impact that a change or update to a first object will have on a second object, without actually executing the program. This results in a cycle of trial-and-error to get the desired behavior.
From the foregoing, it is appreciated that there exists a need for systems and methods that overcome the prior art.